﻿
namespace FastFood.Business.Logic
{
    using System;
    using System.Collections.Generic;
    using EDOSwit.Entity;
    using FastFood.DataAccess;
    using FastFood.Business.Entities;
    using System.Linq;

    /// <summary>
    /// Represents the Manager of Cocina.
    /// </summary>
    [Serializable]
    public class CocinaManager : Singleton<CocinaManager>
    {
        #region Methods

        /// <summary>
        /// Selects all records from the Cocina table.
        /// </summary>
        public IList<Cocina> Listar(DateTime? fecha, char estado)
        {
            try
            {
                var cocinas = CocinaData.Instancia.Listar(fecha, estado);
                foreach (var cocina in cocinas)
                {
                    cocina.cantidad = MathExpression.Round(cocina.cantidad);
                }
                return cocinas.OrderByDescending(p => p.cocinaID).ToList();
            }
            catch (Exception) { throw; }
        }

        /// <summary>
        /// Selects a single record from the Cocina table.
        /// </summary>
        public Cocina Obtener(int cocinaID)
        {
            try
            {
                var cocina = CocinaData.Instancia.Obtener(cocinaID);
                cocina.cantidad = MathExpression.Round(cocina.cantidad);
                return cocina;
            }
            catch (Exception) { throw; }
        }

        /// <summary>
        /// Saves a record to the Cocina table.
        /// </summary>
        public int Agregar(Cocina cocina)
        {
            try
            {
                cocina.cantidad = MathExpression.Round(cocina.cantidad);
                return CocinaData.Instancia.Agregar(cocina);
            }
            catch (Exception) { throw; }
        }

        /// <summary>
        /// Updates a record in the Cocina table.
        /// </summary>
        public bool Modificar(Cocina cocina)
        {
            try
            {
                cocina.cantidad = MathExpression.Round(cocina.cantidad);
                return CocinaData.Instancia.Modificar(cocina);
            }
            catch (Exception) { throw; }
        }

        /// <summary>
        /// Deletes a record from the Cocina table by its primary key.
        /// </summary>
        public bool Eliminar(Cocina cocina)
        {
            try
            {
                return CocinaData.Instancia.Eliminar(cocina);
            }
            catch (Exception) { throw; }
        }

        #endregion
    }
}
